<?php
/**
 * Nweb Framework
 *
 * This script is protected by copyright. It's use, copying, modification
 * and distribution without written consent of the author is prohibited.
 *
 * @category    source
 * @package     pl.nweb.framework.config
 * @subpackage  manager
 * @author      Krzysztof Kardasz <krzysztof.kardasz@gmail.com>
 * @copyright   Copyright (c) 2011 Krzysztof Kardasz
 * @license     http://www.gnu.org/licenses/lgpl-3.0.txt  GNU Lesser General Public
 * @version     3.0 $Id$
 * @link        http://code.google.com/p/nweb-framework/
 * @link        http://framework.nweb.pl
 */

namespace pl\nweb\framework\config;

/**
 * Menadżer konfiguracji 
 *
 * @category    source
 * @package     pl.nweb.framework.config
 * @subpackage  manager
 * @author      Krzysztof Kardasz <krzysztof.kardasz@gmail.com>
 * @copyright   Copyright (c) 2011 Krzysztof Kardasz
 * @version     3.0 $Id$
 */
class Manager 
{    
    /**
     *  Kolekcja obiektów konfiguracji
     *  
     *  @var array
     */
    private static $_configs = array();
        
    /**
     * Zwraca obiekt menadżera konfiguracji konfiguracji
     * 
     * @param string $namespace
     * @return \pl\nweb\framework\Config
     */
    public static function get ($namespace = 'application')
    {
        if(!isset(self::$_configs[$namespace])) {
            throw new manager\Exception ('Config namespace "' . $namespace . '" not defined');
        }
        return self::$_configs[$namespace];
    }
        
    /**
     * Definiuje obiekt menadżera konfiguracji
     * 
     * @param \pl\nweb\framework\Config $config obiekt konfiguracji
     * @param string $namespace opcjonalnie nazwa menadżera konfiguracji - domyślnie "application"
     * @return void
     */
    public static function set (\pl\nweb\framework\Config $config, $namespace = 'application')
    {
        self::$_configs[$namespace] = $config;
    }
        
    /**
     * Zwraca flagę czy konfiguracja jest zdefiniowana
     * 
     * @param string $namespace opcjonalnie nazwa menadżera konfiguracji - domyślnie "application"
     * @return boolean
     */
    public static function has ($namespace = 'application')
    {
        return isset(self::$_configs[$namespace]);
    }
}